﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NewstorePlateformeDAO
{
    partial class Utilisateur
    {
        /// <summary>
        /// Teste si l'utilisateur existe pour les logins fournis.
        /// </summary>
        /// <param name="login">The login.</param>
        /// <param name="password">The password.</param>
        /// <returns></returns>
        public static bool Exist(string login, string password)
        {
            bool exist = false;

            try
            {
                EntitiesHelper.DisplayDebug("Recherche d'utilisateur ..");
                using (Newstore_PL_GOLD_BDDEntities context = new Newstore_PL_GOLD_BDDEntities(EntitiesHelper.connexionString))
                {
                    Utilisateur oUtilisateur = (from utilisateur in context.Utilisateur
                                                where utilisateur.Identifiant == login
                                                where utilisateur.MotDePasse == password
                                                select utilisateur).FirstOrDefault();

                    if (oUtilisateur != null)
                        exist = true;
                }
            }
            catch (Exception ex)
            {
                EntitiesHelper.DisplayDebug("Utilisateur.Exist()", ex);
            }

            return exist;
        }

        /// <summary>
        /// Obtient l'identifiant d'un utilisateur correspondant aux logins fournis.
        /// </summary>
        /// <param name="login">The login.</param>
        /// <param name="password">The password.</param>
        /// <returns></returns>
        public static int GetId(string login, string password)
        {
            int id = 0;

            using (Newstore_PL_GOLD_BDDEntities context = new Newstore_PL_GOLD_BDDEntities(EntitiesHelper.connexionString))
            {
                Utilisateur oUtilisateur = (from utilisateur in context.Utilisateur
                                            where utilisateur.Identifiant == login
                                            where utilisateur.MotDePasse == password
                                            select utilisateur).FirstOrDefault();

                if (oUtilisateur != null)
                    id = oUtilisateur.idUtilisateur;
            }

            return id;
        }

        /// <summary>
        /// Obtient l'utilisateur correspondant à l'identifiant fourni.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        public static Utilisateur Get(int id)
        {
            Utilisateur user = null;

            using (Newstore_PL_GOLD_BDDEntities context = new Newstore_PL_GOLD_BDDEntities(EntitiesHelper.connexionString))
            {
                user = (from utilisateur in context.Utilisateur
                        where utilisateur.idUtilisateur == id
                        select utilisateur).FirstOrDefault();
            }

            return user;
        }

        /// <summary>
        /// Enregistre un nouvel utilisteur.
        /// </summary>
        /// <param name="goldEmployeId">L'identifiant employé GOLD.</param>
        /// <param name="password">Le mod-de-passe.</param>
        /// <param name="typeUtilisateur">Le type d'utilisateur.</param>
        /// <returns></returns>
        public static bool Insert(Int32 goldEmployeId, string login, string password, int typeUtilisateur)
        {
            bool created = false;

            using (Newstore_PL_GOLD_BDDEntities context = new Newstore_PL_GOLD_BDDEntities(EntitiesHelper.connexionString))
            {
                Utilisateur oUtilisateur = new Utilisateur
                {
                    idGOLD_EMPLOYE = goldEmployeId,
                    Identifiant = login,
                    MotDePasse = password
                };

                created = oUtilisateur.Add(context) > 0 ? true : false;
            }

            return created;
        }
    }
}
